package cn.edu.hubu.javaparkinglot.service.impl;

import cn.edu.hubu.javaparkinglot.VO.ResultVO;
import cn.edu.hubu.javaparkinglot.entity.User;
import cn.edu.hubu.javaparkinglot.mapper.UserMapper;
import cn.edu.hubu.javaparkinglot.service.UserService;
import cn.hutool.crypto.digest.DigestUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {
    //在Service业务中注入一个UserMapper对象
    @Autowired
    private UserMapper userMapper;

    @Override
    public ResultVO checkAccount(String account) {
        //编写业务代码
        //1.调用UserMapper中的SelectByAccount方法 按照account参数查询用户信息
        User user=userMapper.selectByAccount(account);
        //2.判断查询结果、封装验证结果
        if(user!=null){
            return new ResultVO(500, "账号不可用", account);
        }else{
            return new ResultVO(200, "账号可用", account);
        }
    }

    @Override
    public ResultVO saveUser(User user) {
        //编写业务代码
        //1.将user对象中的密码取出来进行md5加密
        //使用hutool包工具类对密码进行加密
        String user_password=user.getUserPassword();
        String newPwd = DigestUtil.md5Hex(user_password);
        user.setUserPassword(newPwd);

        //2.调用insertUser()方法
        int i = userMapper.insertUser(user);

        //3.根据结果进行响应
        if(i>0){
            return new ResultVO(200, "注册成功", null);
        }else{
            return new ResultVO(500, "注册失败", null);
        }


    }

    @Override
    public ResultVO checkLogin(String account, String pwd) {
        //1.根据账号查询信息
        User user = userMapper.selectByAccount(account);

        //2.如果没有查询到信息，说明账号错误，直接返回失败的结果
        if(user == null){
            return new ResultVO(500,"账号错误，登录失败",null);
        }

        //3.如果查询到了用户信息，说明账户正确，接着进行校验；对前端输入密码进行加密
        //a.对前端输入的用户密码进行加密
        String newPwd = DigestUtil.md5Hex(pwd);//newPwd：用户在输入页面输入的密码
        String dbPwd = user.getUserPassword();//dbPwd：数据库存储的密码
        if(newPwd.equals(dbPwd))
        {
            //登录成功
            user.setUserPassword("********");
            return new ResultVO(200,"登录成功！",user);
        }else{
            // 登录失败
            return new ResultVO(500,"密码错误，登录失败！",null);
        }

    }
}
